package io;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 文件输出流
 * 文件输出刘是用来连接程序于文件的”管道“，可以把程序中的数据写入到文件中
 * 继承自java.io.OutputStream
 * 文件流的方法都是操作文件的
 */

public class FOSDemo {
    public static void main(String[] args) throws IOException {
        /**
         * FileOutputStream  输出文件的常用构造器，必须有参
         * 1. FileOutputStream(String pathname)-----------------------------
         */
        FileOutputStream fos = new FileOutputStream("./fos.dat");
        //编译错误，处理办法：鼠标在红色上，按alt+回车 选择add exception，跟creatNewFlie一样

        /**
          另一种构造器是：
          2. FileOutputStream(File file)----------------------------------

          下边的语句同上，两种都可以
           注意：两种构造器，如果名字为pathname和file的文件不存在，系统默认帮我们创建这个文件！！！！！！！
                         如果存在，系统将抹除文件中的所有内容，然后通过当前流写出的内容会保存到文件中！！！！！！
            Test2中写了追加模式，防止原文件数据被抹除，可以继续写入
         */
        File file = new File("./fos.dat");
        FileOutputStream fos1 = new FileOutputStream(file);

        /**
          方法1：
          void write(int d)
          写出1个字节，写出的给定的int值的对应二进制的”低八位“

          fos.write(1);
          int型整数1的二进制是：
          00000000 00000000 00000000 00000001
          最后那八位，叫低八位

          fos.dat文件中的内容为：00000001
          至于文件的后缀，写什么都行，因为后缀只是windows系统的而已

         -------------------------------------------------------------

          fos.write(2);
          int类型整数2的二进制是：
          00000000 00000000 00000000 00000011

          fos.dat文件中的内容为:00000001 00000011
         */
        fos.write(1);
        fos.write(2);
        System.out.println("写出完毕");
        fos.close();  //流使用完之后都要关闭，这是惯例
    }
}
